home *** CD-ROM | disk | FTP | other *** search
/ DS-CD ROM 2 1993 August / DS CD-ROM 2.Ausgabe (August 1993).iso / programm / ds0257 / demo.exe / STRINGS1.DEM < prev    next >
Text File  |  1992-02-16  |  3KB  |  118 lines

  1. ; ----------------------------
  2. ; STRINGS1.DEM - Demoprogramm für die Routinen aus STRINGS1.LIB
  3. ;                (für den A86)
  4. ;
  5. ;                (c) Bernd Schemmer 1990 - 1992
  6. ;                Letzter Update: 15.02.1992
  7. ;
  8. ; Übersetzen:
  9. ;  A86 MACROS.MAC STRINGS1.DEM STRINGS1.LIB DEMOS.INC TO STRINGS1.COM
  10. ; ---------------------------
  11.  
  12.          jmp start            ; Daten überspringen
  13.  
  14. logo  db CR,LF
  15.       db 'STRINGS1.DEM  - Demoprogramm für die Routinen aus STRINGS1.LIB'
  16.       db CR,LF
  17.       db '--------------------------------------------------------------'
  18. GETLENGTH logo
  19.  
  20. zeile1 db 255,0,256 dup 0     ; Puffer für die Eingabe und Bearbeitung
  21. zeile2 db 255,0,256 dup 0
  22.  
  23. msg1    db CR,LF,CR,LF
  24.         db 'Bitte einen String eingeben (<CR> = Ende): '
  25.         db CR,LF
  26. GETLENGTH msg1
  27.  
  28. msg2    db CR,LF
  29.         db CR,LF
  30.         db 'Eingabe komprimiert und aufbereitet (#nnn = ASCII-Code, Länge: '
  31. laenge2 db '___): ->'
  32.         db CR,LF
  33. GETLENGTH msg2
  34.  
  35. msg3    db CR,LF
  36.         db CR,LF
  37.         db 'Eingabe wieder dekomprimiert (Länge: '
  38. laenge3 db '___): ->'
  39.         db CR,LF
  40. GETLENGTH msg3
  41.  
  42. msg4    db CR,LF,CR,LF
  43.         db 'Nochmal? '
  44. GETLENGTH msg4
  45.  
  46. start:
  47.          call ShowLogo        ; Logo ausgeben und Speicherblock verkleinern
  48. l0:
  49.          WRITE_STRING msg1
  50.                               ; Eingabe lesen
  51.          mov dx,offset zeile1
  52.          mov ah,0Ah
  53.          int 021h
  54.          cmp b zeile1+1,0     ; leere Eingbe?
  55.          jne >l1              ; nein
  56.          jmp Ende             ; ja, Ende
  57.  
  58. l1:                           ; Eingabe komprimieren
  59.          mov si,offset zeile1+1
  60.          call KomprimiereString
  61.  
  62.                               ; Komprimierten String aufbereiten
  63.          mov si,offset zeile1+1
  64.          mov di,offset zeile2+1
  65.          call FormatiereASCIIString
  66.  
  67.                               ; Komprimierten und aufbereiteten String
  68.                               ; ausgeben
  69.          mov al,zeile1+1
  70.          mov di,offset laenge2
  71.          call Konvert_AL_To_Dezstring
  72.  
  73.          WRITE_STRING msg2
  74.          mov dx,offset zeile2+2
  75.          mov cl,zeile2+1
  76.          xor ch,ch
  77.          mov bx,01h
  78.          mov ah,040h
  79.          int 021h
  80.  
  81.                               ; Eingabe wieder zurück-konvertieren
  82.          mov si,offset zeile2+1
  83.          mov di,offset zeile1+1
  84.          call DeFormatiereASCIIString
  85.  
  86.                               ; und dekomprimieren
  87.          mov si,offset zeile1+1
  88.          mov di,offset zeile2+1
  89.          call DekomprimiereString
  90.  
  91.          mov al,zeile2+1
  92.          mov di,offset laenge3
  93.          call Konvert_AL_To_Dezstring
  94.  
  95.          WRITE_STRING msg3
  96.          mov dx,offset zeile2+2
  97.          mov cl,zeile2+1
  98.          xor ch,ch
  99.          mov bx,01h
  100.          mov ah,040h
  101.          int 021h
  102.  
  103.          WRITE_STRING msg4
  104.          mov ah,08h
  105.          int 021h
  106.          push ax
  107.          pop ax
  108.          cmp al,'j'
  109.          if e jmp l0
  110.          cmp al,'J'
  111.          if e jmp l0
  112.          cmp al,CR
  113.          if e jmp l0
  114.  
  115. Ende:
  116.          EndProcess 0
  117.  
  118.